トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ダイナミックテキストの中の文字列を一部消去
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
さくら
Åê¹ÆNo.40123
投稿日時: 2008-9-1 15:22
半人前
居住地:
投稿: 48
使用環境:
windowsXP,FlashCS3
ダイナミックテキストの中の文字列を一部消去
お世話になっております。
度重なる投稿、申し訳ありません!

ダイナミックテキスト枠に羅列されている文字列を一部削除するのに悪戦苦闘しています。

目的としている動作は下記のとおりです。
ステージ上には「りんごmc」「みかんmc」「バナナmc」という名前のムービークリップが配置され、その下には、ダイナミックテキスト枠が配置されています。

「りんごmc」がクリックされたら、ダイナミックテキスト枠に「りんご 」と表示され、「みかんmc」がクリックされたら「みかん 」と表示されます。
更に、再度「りんごmc」がクリックされたらダイナミックテキスト枠内の「りんご 」のみが削除されるというしくみにしたいと思います。

この「りんご 」を削除するところでつまずいているのですが、
たとえば、ダイナミックテキスト内に羅列されている「りんご バナナ みかん」の「りんご 」を削除するのに、あらかじめダイナミックテキスト内に羅列されている文字列と同じ文字列が格納されている変数の中から“りんご ”という文字列を見つけ出して“”で置き換えをし、ダイナミックテキストを再表示させればいいのかも知れないなど、いろいろ調べてはみたのですが、見つけられずにいます。

ダイナミックテキスト枠内をダイレクトに変更できればなおいいのですが、どなたか、良い方法がありましたらご伝授ください。

よろしくお願い致します。
野中文雄
Åê¹ÆNo.40124
投稿日時: 2008-9-1 15:50
ちょんまげら
居住地: 東京
投稿: 4247
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: ダイナミックテキストの中の文字列を一部消去
以下のスクリプトを試したうえで、工夫してみてください。
var _str:String = "りんご バナナ みかん";
var word_str:String = "りんご ";
var nPosition:Number = _str.indexOf(word_str);
trace(nPosition);
var nLength:Number = _str.length;
var nWord:Number = word_str.length;
var sub_str:String = _str.substring(nPosition+nWord, nLength);
trace(sub_str);

引用:
noragoroさんは書きました:
この「りんご 」を削除するところでつまずいているのですが、
たとえば、ダイナミックテキスト内に羅列されている「りんご バナナ みかん」の「りんご 」を削除するのに、あらかじめダイナミックテキスト内に羅列されている文字列と同じ文字列が格納されている変数の中から“りんご ”という文字列を見つけ出して“”で置き換えをし、ダイナミックテキストを再表示させればいいのかも知れないなど、いろいろ調べてはみたのですが、見つけられずにいます。


----------------
 

さくら
Åê¹ÆNo.40125
投稿日時: 2008-9-1 15:57
半人前
居住地:
投稿: 48
使用環境:
windowsXP,FlashCS3
Re: ダイナミックテキストの中の文字列を一部消去
野中さん、いつも本当にありがとうございます!
早速試してみます!
さくら
Åê¹ÆNo.40127
投稿日時: 2008-9-1 18:30
半人前
居住地:
投稿: 48
使用環境:
windowsXP,FlashCS3
Re: ダイナミックテキストの中の文字列を一部消去
ちょっといびつなスクリプトかも知れませんが、
下記の記述でOKでした!
すごいです…ありがとうございました!

var _str:String = _root.choice_txt.text; ※「りんご バナナ いちご みかん オレンジ」の文字列が羅列
var word_str:String = "みかん ";
var nPosition:Number = _str.indexOf(word_str);
var nLength:Number = _str.length;
var nWord:Number = word_str.length;
var sub1_str:String = _str.substring(0, nPosition);
var sub2_str:String = _str.substring(nPosition+nWord, nLength);
var sub_str:String = sub1_str + sub2_str;
_root.choice_txt.text = sub_str;
野中文雄
Åê¹ÆNo.40128
投稿日時: 2008-9-1 18:49
ちょんまげら
居住地: 東京
投稿: 4247
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: ダイナミックテキストの中の文字列を一部消去
基本的な処理の手順は、それで結構だと思います。String.substring()メソッドは文字列の扱いの基本ですし、応用範囲も広いので先にご紹介しました。

ただ、今回の処理にかぎっては、以下のスクリプトの方が簡単です。もっとも、処理効率は、どちらでもほとんど変わらないと推測します。対象の単語が複数含まれている場合は、こちらの方法を知っておくと便利です。
var _str:String = "りんご バナナ いちご みかん オレンジ";
var word_str:String = "みかん ";
var string_array:Array = _str.split(word_str);
trace(string_array);
var sub_str:String = string_array.join("");
trace(sub_str);

引用:
noragoroさんは書きました:
ちょっといびつなスクリプトかも知れませんが、
下記の記述でOKでした!


----------------
 

さくら
Åê¹ÆNo.40130
投稿日時: 2008-9-1 19:15
半人前
居住地:
投稿: 48
使用環境:
windowsXP,FlashCS3
Re: ダイナミックテキストの中の文字列を一部消去
早速、コピー&ペーストして動作させてみましたが、辞書片手に調べてみても、「なんでこのスクリプトで“みかん”が削除されるの!?」という状態です。^^;
現時点では摩訶不思議と言いようがありませんが、後ほどじっくり調べさせていただきます。
Flashのスクリプトをいじりだして半年ほど経ちますが、ほんっっとうにFlashって奥が深い!でも楽しい!(笑)

いろいろと学ばせていただき、本当にありがとうございました!
さくら
Åê¹ÆNo.40224
投稿日時: 2008-9-9 17:53
半人前
居住地:
投稿: 48
使用環境:
windowsXP,FlashCS3
Re: ダイナミックテキストの中の文字列を一部消去
野中さん、お世話になっております。

新しいスレッドを立てたほうがいいかどうか迷ったのですが、やはりこちらに書き込ませていただこうと思いました。
再度のご返信、大変申し訳ありません。

過去の質問内容では、「りんごmc」がクリックされたら、ダイナミックテキスト枠に「りんご 」と表示され、「みかんmc」がクリックされたら「みかん 」と表示、更に、再度「りんごmc」がクリックされたらダイナミックテキスト枠内の「りんご 」のみが削除されるというしくみにしたいと書き込みしましたが、実は各mcをクリックすると、それぞれ町名が表示されるというもので、中には「中野」「中野町」「北中野町」という名称のものもあります。

野中さんがご説明してくださった

var _str:String = "りんご バナナ いちご みかん オレンジ";
var word_str:String = "みかん ";
var string_array:Array = _str.split(word_str);
trace(string_array);
var sub_str:String = string_array.join("");
trace(sub_str);

のスクリプトは、
削除したい文字で分割して配列にした後、文字列として連結するということは理解できたのですが、上記の「中野」「中野町」「北中野町」という町名が選択されてしまった場合、一体どうしたらいいものか、新たな壁にぶち当たっている状態です。
(※シンプルにしたほうがいいだろうと思って「くだもの」の名前を羅列しましたが、すみません、最初から気づいてご説明すべきでした…汗)

ご助言を請いたいと思います、どうぞよろしくお願いします。
野中文雄
Åê¹ÆNo.40225
投稿日時: 2008-9-9 19:04
ちょんまげら
居住地: 東京
投稿: 4247
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: ダイナミックテキストの中の文字列を一部消去
もう少し、内容を詳しく説明された方がよいと思います。「中野 」とワン・スペース入るなら、問題ないですよね。ということで、スペースは入らない前提とします。

ひとつは、エディタなどで行う検索・置換と同じで、混同されるとまずいものは、一旦別の文字に置換えておくという対処法があります。

もうひとつ、配列に変換した状態で処理してもよいでしょう。
var _str:String = "中野 中野町 北中野町";
var towns_array:Array = _str.split(" ");
trace(towns_array);
var word_str:String = "中野";
for (var i:Number=towns_array.length-1; i>=0; i--) {
	if (towns_array[i] == word_str) {
		towns_array.splice(i, 1);
	}
}
var sub_str:String = towns_array.join(" ");
trace(sub_str);

引用:
noragoroさんは書きました:
削除したい文字で分割して配列にした後、文字列として連結するということは理解できたのですが、上記の「中野」「中野町」「北中野町」という町名が選択されてしまった場合、一体どうしたらいいものか、新たな壁にぶち当たっている状態です。


----------------
 

さくら
Åê¹ÆNo.40234
投稿日時: 2008-9-10 13:18
半人前
居住地:
投稿: 48
使用環境:
windowsXP,FlashCS3
Re: ダイナミックテキストの中の文字列を一部消去
なるほど!
配列にして、削除したい文字列と同じかどうか、ひとつづつ確認すればいいのですね!

それと、野中さんがおっしゃった、

『もう少し、内容を詳しく説明された方がよいと思います。「中野 」とワン・スペース入るなら、問題ないですよね。ということで、スペースは入らない前提とします。』は、まだ理解不足でピンとこないのですが(すみません…汗)、合間を見て自分で調べようと思います。

でも、システム的にはなんら問題なく動いてくれるようになりました!

取り急ぎ、お礼をお伝えしたくご返信します。
本当にありがとうございました!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops